#include <stdio.h>
#include <unistd.h>
#include <string.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>

int main()
{
    //stdin    stdout    stderr   -> FILE*
    // 0         1          2
    //标准输入 标准输出 标准错误
    char input[16];
    ssize_t s = read(0,input,sizeof(input));
    if(s > 0)
    {
        input[s] = '\0';
        printf("%s",input);
    }



    //int a = 10;
    //fscanf(stdin,"%d",&a);
    //printf("%d\n",a);


    //fprintf(stdout,"hello stdout\n");
    //const char* s = "hello 1\n";
    //write(1,s,strlen(s));


    //stdin,stdout,stderr -> FILE * -> 内部有fd 怎么证明
    //printf("stdin: %d\n",stdin->_fileno);
    //printf("stdout: %d\n",stdout->_fileno);
    //printf("stderr: %d\n",stderr->_fileno);

    return 0;
}



//int main()
//{
//    umask(0);
//    //int fd = open("log.txt",O_WRONLY | O_CREAT | O_TRUNC, 0666);//rw-rw-rw-
//    //int fd = open("log.txt",O_WRONLY | O_CREAT | O_APPEND, 0666);//rw-rw-rw-
//    int fd = open("log.txt",O_RDONLY);
//    if(fd<0)
//    {
//        perror("open");
//        return 1;
//    }
//    printf("open success, fd: %d\n",fd);
//    
//    
//    char buffer[64];
//    memset(buffer,'\0',sizeof(buffer));
//    read(fd,buffer,sizeof(buffer));
//
//    printf("%s",buffer);
//
//    //const char *s = "hello write\n";
//    //const char *s = "aaaa\n";
//    //write(fd,s,strlen(s));//写入
//
//    //open success
//    
//    close(fd);
//    return 0;
//}



//// 用int中的不重复的一个bit，就可以标识一种状态
//#define ONE 0x1   //0000 0001
//#define TWO 0x2   //0000 0010
//#define THREE 0x4 //0000 0100
//void show(int flags)
//{
//    if(flags & ONE) printf("hello one\n");
//    if(flags & TWO) printf("hello two\n");
//    if(flags & THREE) printf("hello three\n");
//}
//
//int main()
//{
//    show(ONE);
//    show(TWO);
//    show(ONE | TWO);
//    show(ONE | TWO | THREE);
//    show(ONE | THREE);
//    return 0;
//}



//int main(int argc,char* argv[])
//{
//    if(argc != 2)
//    {
//        printf("argv error!\n");
//        return 1;
//    }
//    FILE *fp = fopen(argv[1],"r");
//    if(fp == NULL)
//    {
//        perror("fopen");
//        return 2;
//    }
//    //读取文件
//    char line[64];
//    //fgets -> C -> s(string) -> 会自动在字符结尾添加\0
//    while(fgets(line,sizeof(line),fp)!=NULL)
//    {
//        //printf("%s",line);
//        fprintf(stdout,"%s",line);
//    }
//
//
//    //文件操作
////    const char *s1 = "hello 105\n";
////    fwrite(s1,strlen(s1),1,fp);//不要+1，\0结尾是c语言的基础，文件不需要遵守，文件保存的是有效数据
////    
////    const char *s2 = "hello fprintf\n";
////    fprintf(fp,"%s",s2);
////
////    const char *s3 = "hello fputs\n";
////    fputs(s3,fp);
//
//    fclose(fp);
//
//    
////    while(1)
////    {
////        sleep(1);
////    }
//
//    
//    return 0;
//}
